package es.gesfutbol.web;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import es.gesfutbol.dao.IEstadiDao;
import es.gesfutbol.domini.implementacio.Estadi;

public class EstadiController extends MultiActionController{
	
	private IEstadiDao estadiDao;
	
	public IEstadiDao getEstadiDao() {
		return estadiDao;
	}

	public void setEstadiDao(IEstadiDao estadiDao) {
		this.estadiDao = estadiDao;
	}
	
	/**
	 * Mètode que inicialitza la pàgina d'equips i envia la llista
	 * d'equips actuals a la vista.
	 * 
	 * @param request
	 * @param response
	 * @return
	 * @throws Exception
	 */
	public ModelAndView init(HttpServletRequest request,
	HttpServletResponse response) throws Exception {

		//Obtenim la llista d'estadis per mostrar a la taula.
		List<Estadi> estadis = estadiDao.findAll();
		//Enviem una instancia d'un estadi nou.
		Estadi nouEstadi = new Estadi();
		
		ModelMap modelMap = new ModelMap();
		modelMap.addAttribute("llistatEstadis", estadis);
		modelMap.put("estadi", nouEstadi);		
		return new ModelAndView("administracion/estadis", modelMap);
	}
	
	/**
	 * Mètode que obté de la request l'equipId a modificar, el cerca
	 * i retorna els valors al formulari d'equips.
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView viewUpdate(HttpServletRequest request,
			HttpServletResponse response){
		
		List<Estadi> estadis = estadiDao.findAll();
		
		Long idEstadi = Long.parseLong(request.getParameter("idEstadi"));
		Estadi estadi = estadiDao.findById(idEstadi);
		
		ModelMap model = new ModelMap();
		model.addAttribute("llistatEstadis", estadis);
		model.put("estadi", estadi);
		return new ModelAndView("administracion/estadis", model);
	}
	
	/**
	 * Mètode que elimina un equip de la bbdd.
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	public ModelAndView delete(HttpServletRequest request,
			HttpServletResponse response){
		
		Long idEstadi = Long.parseLong(request.getParameter("idEstadi"));
		estadiDao.delete(idEstadi);
		
		return new ModelAndView("redirect:init.htm");
	}
	
	/**
	 * Mètode que guarda els canvis tant de l'afegir com l'editar
	 * equip.
	 * 
	 * @param request
	 * @param response
	 * @param equip
	 * @return
	 */
	public ModelAndView addOrUpdate(HttpServletRequest request,
			HttpServletResponse response, Estadi estadi){
		
		estadiDao.save(estadi);

		return new ModelAndView("redirect:init.htm");
	}

}
